home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #1 / Amiga Plus CD - 2000 - No. 1.iso / Tools / Dev / StormAmigalib / stormamiga_lib / Include / sys / stat.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-12-03  |  4.8 KB  |  143 lines

  1. #ifndef SYS_STAT_H
  2. #define SYS_STAT_H
  3.  
  4. /*
  5. **       $VER: sys/stat.h 1.5 (18.09.98)
  6. **            Includes Release 44.10
  7. **
  8. **     Copyright © 1996/98 by CyberdyneSystems
  9. **
  10. **            written by Matthias Henze
  11. **               All Rights Reserved
  12. */
  13.  
  14. #ifndef STORMAMIGA_H
  15.   #include <stormamiga.h>
  16. #endif
  17. #ifndef SYS_TYPES_H
  18.   #include <sys/types.h>
  19. #endif
  20. #ifndef SYS_TIMES_H
  21.   #include <sys/time.h>
  22. #endif
  23.  
  24. #ifdef __cplusplus
  25.   extern "C" {
  26. #endif
  27.  
  28. struct stat
  29. {
  30.     dev_t   st_dev;                 /* inode's device */
  31.     ino_t   st_ino;                 /* inode's number */
  32.     ushort  st_mode;                /* inode protection mode */
  33.     short   st_nlink;               /* number of hard links */
  34.     uid_t   st_uid;                 /* user ID of the file's owner */
  35.     gid_t   st_gid;                 /* group ID of the file's group */
  36.     dev_t   st_rdev;                /* device type */
  37.     off_t   st_size;                /* file size, in bytes */
  38.     time_t  st_atime;               /* time of last access */
  39.     int     st_spare1;
  40.     time_t  st_mtime;               /* time of last data modification */
  41.     int     st_spare2;
  42.     time_t  st_ctime;               /* time of last file status change */
  43.     int     st_spare3;
  44.     long    st_blksize;             /* optimal blocksize for I/O */
  45.     long    st_blocks;              /* blocks allocated for file */
  46.     long    st_spare4[2];
  47. };
  48.  
  49. #define st_handler st_spare3
  50. #define st_amode   st_spare2
  51.  
  52. #define S_ISUID 0004000                 /* set user id on execution */
  53. #define S_ISGID 0002000                 /* set group id on execution */
  54. #ifndef _POSIX_SOURCE
  55.   #define S_ISTXT 0001000               /* sticky bit */
  56. #endif
  57.  
  58. #define S_IRWXU 0000700                 /* RWX mask for owner */
  59. #define S_IRUSR 0000400                 /* R for owner */
  60. #define S_IWUSR 0000200                 /* W for owner */
  61. #define S_IXUSR 0000100                 /* X for owner */
  62.  
  63. #ifndef _POSIX_SOURCE
  64.   #define S_IREAD         S_IRUSR
  65.   #define S_IWRITE        S_IWUSR
  66.   #define S_IEXEC         S_IXUSR
  67. #endif
  68.  
  69. #define S_IRWXG 0000070                 /* RWX mask for group */
  70. #define S_IRGRP 0000040                 /* R for group */
  71. #define S_IWGRP 0000020                 /* W for group */
  72. #define S_IXGRP 0000010                 /* X for group */
  73.  
  74. #define S_IRWXO 0000007                 /* RWX mask for other */
  75. #define S_IROTH 0000004                 /* R for other */
  76. #define S_IWOTH 0000002                 /* W for other */
  77. #define S_IXOTH 0000001                 /* X for other */
  78.  
  79. #ifndef _POSIX_SOURCE
  80.   #define S_IFMT   0170000              /* type of file */
  81.   #define S_IFIFO  0010000              /* named pipe (fifo) */
  82.   #define S_IFCHR  0020000              /* character special */
  83.   #define S_IFDIR  0040000              /* directory */
  84.   #define S_IFBLK  0060000              /* block special */
  85.   #define S_IFREG  0100000              /* regular */
  86.   #define S_IFLNK  0120000              /* symbolic link */
  87.   #define S_IFSOCK 0140000              /* socket */
  88.   #define S_ISVTX  0001000              /* save swapped text even after use */
  89.  
  90.   #define ACCESSPERMS   (S_IRWXU|S_IRWXG|S_IRWXO)       /* 0777 */
  91.                             /* 7777 */
  92.   #define ALLPERMS      (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
  93.                             /* 0666 */
  94.   #define DEFFILEMODE   (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
  95.  
  96.   #define S_BLKSIZE     512             /* block size used in the stat struct */
  97. #endif
  98.  
  99. #define S_ISDIR(m)      ((m & 0170000) == 0040000)      /* directory */
  100. #define S_ISCHR(m)      ((m & 0170000) == 0020000)      /* char special */
  101. #define S_ISBLK(m)      ((m & 0170000) == 0060000)      /* block special */
  102. #define S_ISREG(m)      ((m & 0170000) == 0100000)      /* regular file */
  103. #define S_ISLNK(m)      ((m & 0170000) == 0120000)      /* symbolic link */
  104. #define S_ISFIFO(m)     ((m & 0170000) == 0010000)      /* fifo */
  105. #ifndef _POSIX_SOURCE
  106.   #define S_ISSOCK(m)   ((m & 0170000) == 0140000)      /* socket */
  107. #endif
  108.  
  109.  
  110. int     chmod (cchar *, mode_t);
  111. int     fstat(int, struct stat *);
  112. int     mkdir (cchar *, mode_t);
  113. int     stat  (cchar *, struct stat *);
  114. #ifndef _POSIX_SOURCE
  115.   int   lstat (cchar *, struct stat *);
  116. #endif
  117.  
  118. #ifdef __cplusplus
  119.   }
  120. #endif
  121.  
  122. #ifdef STORMAMIGA_UNIXPATH
  123.   __inline int chmod_u  (cchar *path, mode_t mode)
  124.   { return chmod        (path, mode); }
  125.  
  126.   __inline int lstat_u  (cchar *path, struct stat *sb)
  127.   { return lstat        (path, sb); }
  128.  
  129.   __inline int mkdir_u  (cchar *path, mode_t mode)
  130.   { return mkdir        (path, mode); }
  131.  
  132.   __inline int stat_u   (cchar *path, struct stat *sb)
  133.   { return stat         (path, sb); }
  134.  
  135.   #define chmod(path, mode)   chmod_u(UnixToAmigaPath(path), mode)
  136.   #define lstat(path, sb)     lstat_u(UnixToAmigaPath(path), sb)
  137.   #define mkdir(path, mode)   mkdir_u(UnixToAmigaPath(path), mode)
  138.   #define stat(path, sb)      stat_u(UnixToAmigaPath(path), sb)
  139. #endif
  140.  
  141. #endif /* SYS_STAT_H */
  142.  
  143.